Many software development tools allow users to view a diagrammatic representation of coded entities and maintain synchronization between the diagrammatic representation and the underlying entities. For example, class diagramming tools allow users to draw a diagram which displays characteristics of classes in an object-oriented system and relationships between classes, to help design and describe the system. Many class diagramming tools support “forward generation,” which enables diagram elements to be used to generate code structures and/or other artifacts. Many class diagramming tools also support the inverse operation, “reverse engineering,” whereby code structures and other artifacts are converted into diagram elements. Some tools perform forward generation and reverse engineering in an automated manner, such that code artifacts and design elements are continuously synchronized. This technique may ensure that a class diagram provides an accurate visual representation of current code artifacts.
Exemplary elements of a class diagram are shown in FIG. 1A. Specifically, FIG. 1A includes class diagram elements 110, 120, representing the classes “XMLNode” and “XMLAttributeCollection” (as indicated by class names 115 and 155, respectively). Element 110 includes properties indicator 120 and methods indicator 130, each of which are shown in maximized form (denoted by the “-” to the left of each indicator), such that individual properties and methods of the class are displayed in list form to the user. As an example, the properties of the “XMLNode” class include “attributes” (denoted by attributes indicator 125) and various property indicators having reference characters 122A-122K. Element 110 also includes icon 135, which indicates that the considered class implements the interfaces shown. As an example, interface name 140 (“ICloneable”) is an interface implemented by the “XMLNode” class represented by diagram element 110.
Diagram element 150 is characterized by similar features. For example, diagram element 150 includes class name 155, properties indicator 160 which shows properties of the class in list form, methods indicator 165 which shows methods of the class in list form, and icon 170 which shows the interfaces implemented by the considered class.
Conventionally, much of the effort expended by a user to create a class diagram is spent tailoring the visual characteristics of diagram elements. Customization of diagram elements may include adjusting the number and relative positions of diagram elements, whether certain of the diagram elements are visible or hidden, associations between diagram elements (including endpoints and line routing), and/or other customization.
FIG. 1B illustrates some of the customization which a user may perform to the class diagram of FIG. 1A. In FIG. 1B, methods indicator 130 has been changed to minimized form (denoted by the “+”), such that individual methods of the class are not shown. Properties indicator 120 continues to be shown in maximized form, but several of the individual properties in the underlying listing have been changed. Specifically, properties 122A-122K have been removed from the listing, and the attributes property indicator 125 has been removed and replaced by association indicator 145, which provides that the class “XMLNode” represented by diagram element 110 takes its attributes from the class “XMLAttributeCollection” represented by diagram element 150. Also, the width of element 150 has been increased so that the entire class name 155 is visible to the user, and properties indicator 160 and methods indicator 165 visible in FIG. 1A are hidden. Of course, numerous forms of customization other than those illustrated above could be performed to a class diagram. For example, a user may simplify a class diagram by specifying that only a portion of the total classes present in the underlying code should be visible.